package com.edu.bean;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/*
*       自定义bean后处理器 对容器中的其他对象 进行增强
*               1.实现 BeanPostProcessor
*               2.重写 两个处理方法
*               3.把bean后处理器 放入容器
*
* */
public class MyBeanPostProcessor implements BeanPostProcessor {

    /*
    *   bean后处理器 前置处理
    *       这个方法 会在 对象初始化之前 执行
    *           参数bean 代表- 被强化的对象
    *              beanName 被强化的对象的id
    * */
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
//        System.out.println(bean+"---"+beanName);
        System.out.println("5 执行了 bean后处理器的前置处理方法");
        return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName);
    }

    /*
    *   bean后处理器后置处理
    *       会在bean初始化之后 执行
    * */
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("8 bean后处理器后置处理");
        return BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);
    }
}
